Visualization interface for information object system

ABSTRACT

Disclosed are various embodiments for presenting an interface for visualizing information objects. A user interface is generated on a client computing device. Then a collaboration server may be queried for an information object to be rendered within the user interface on behalf of a user in response to a request to render the information object. Subsequently, form data may be retrieved from the information object received from the collaboration server. Then the information object may be rendered within the user interface based at least in part on the form data of the information object.

CLAIM OF PRIORITY

This application claims priority to and the benefit of U.S. patentapplication Ser. No. 14/208,346, filed on Mar. 13, 2014, and entitled“VISUALIZATION INTERFACE FOR INFORMATION OBJECT SYSTEM,” which claimspriority to and the benefit of U.S. Provisional Application Ser. No.61/787,688, filed on Mar. 15, 2013. Both of these references areincorporated by reference as if set forth herein in their entireties.

FEDERALLY SPONSORED RESEARCH

This invention was made with Government support under Contact No.W31P4Q-10-C-0010 awarded by the Defense Advanced Research ProjectsAgency (“DARPA”). The Government has certain rights in the invention.

BACKGROUND

Information is stored on computers in files and other data formats.Various applications may use the files, or other data formats, topresent the information in a manner that is conducive to humanunderstanding. The applications may further show relationships betweenseparate pieces of information in a manner that is conducive to humanunderstanding.

BRIEF DESCRIPTION OF THE DRAWINGS

Many aspects of the present disclosure can be better understood withreference to the following drawings. The components in the drawings arenot necessarily to scale, with emphasis instead being placed uponclearly illustrating the principles of the disclosure. Moreover, in thedrawings, like reference numerals designate corresponding partsthroughout the several views.

FIG. 1 is a drawing of a networked environment according to variousembodiments of the present disclosure.

FIG. 2 is a drawing of an Information Object as depicted in thenetworked environment of FIG. 1 according to various embodiments of thepresent disclosure.

FIG. 3A-G are drawings of examples of a user interface rendered by aclient in the networked environment of FIG. 1 according to variousembodiments of the present disclosure.

FIG. 4 is a flowchart illustrating one example of functionalityimplemented as portions of a client application and a collaborationserver executed in in the networked environment of FIG. 1 according tovarious embodiments of the present disclosure.

FIG. 5 is a flowchart illustrating one example of functionalityimplemented as portions of a client application and a collaborationserver executed in in the networked environment of FIG. 1 according tovarious embodiments of the present disclosure.

FIG. 6 is a flowchart illustrating one example of functionalityimplemented as portions of a client application and a collaborationserver executed in in the networked environment of FIG. 1 according tovarious embodiments of the present disclosure.

FIG. 7 is a flowchart illustrating one example of functionalityimplemented as portions of a client application and a collaborationserver executed in in the networked environment of FIG. 1 according tovarious embodiments of the present disclosure.

FIG. 8 is a flowchart illustrating one example of functionalityimplemented as portions of a client application and a collaborationserver executed in in the networked environment of FIG. 1 according tovarious embodiments of the present disclosure.

FIG. 9 is a schematic block diagram that provides one exampleillustration of a computing environment employed in the networkedenvironment of FIG. 1 according to various embodiments of the presentdisclosure.

DETAILED DESCRIPTION

Concept maps and mind maps often facilitate better inspection ofexisting knowledge structures for more rapid identification ofmisconceptions or relationships that require more in-depth analysis. Theuse of computer based concept mapping tools can enhance higher-qualityanalyses through the creation of structural representation of theknowledge domain of complex concepts. In this manner, with concept mapand mind map briefings, both the creators and consumers of content areexpected to be able to more rapidly assess whether the information andanalysis at hand has analytic integrity and value and thus determinewhether further refinement of the analysis is required.

In the following discussion, a general description of the system and itscomponents is provided, followed by a discussion of the operation of thesame.

With reference to FIG. 1, shown is a networked environment 100 accordingto various embodiments. The networked environment 100 includes acomputing environment 103 and a client computing device 106, which arein data communication with each other via a network 109. The network 109includes, for example, the Internet, intranets, extranets, wide areanetworks (WANs), local area networks (LANs), wired networks, wirelessnetworks, or other suitable networks, etc., or any combination of two ormore such networks.

The computing environment 103 may comprise, for example, a servercomputer or any other system providing computing capability.Alternatively, the computing environment 103 may employ a plurality ofcomputing devices that may be employed that are arranged, for example,in one or more server banks or computer banks or other arrangements.Such computing devices may be located in a single installation or may bedistributed among many different geographical locations. For example,the computing environment 103 may include a plurality of computingdevices that together may comprise a cloud computing resource, a gridcomputing resource, and/or any other distributed computing arrangement.In some cases, the computing environment 103 may correspond to anelastic computing resource where the allotted capacity of processing,network, storage, or other computing-related resources may vary overtime.

Various applications and/or other functionality may be executed in thecomputing environment 103 according to various embodiments. Also,various data is stored in a data store 111 that is accessible to thecomputing environment 103. The data store 111 may be representative of aplurality of data stores 111 as can be appreciated. The data stored inthe data store 111, for example, is associated with the operation of thevarious applications and/or functional entities described below.

The components executed on the computing environment 103, for example,include a collaboration server 113, and other applications, services,processes, systems, engines, or functionality not discussed in detailherein. The collaboration server 113 is executed to allow one or moreusers to create and share one or more information objects 116 andpotentially other data.

The data stored in the data store 111 includes, for example, one or moreinformation objects 116, and potentially other data.

Information objects 116 are data storage objects structured to modeldata based on the relationships between individual pieces ofinformation. As such, information objects 116 may comprise a set ofassociations with other information objects 116 to indicate datarelationships. For example, a link between two information objects 116may indicate a data dependency, a structural hierarchy, or otherassociation of data modeled by two or more information objects 116.Information objects 116 may also be assembled and/or derived from otherinformation objects to represent these relationships. As such mostinformation objects 116 may be created from or represented by anassembly of other information objects 116.

However, some types or classes of information objects 116 may bereserved for particular types of data which cannot easily be representedas a combination of two or more other information objects 116. Forexample, repeating data blocks, such as images, sound, video, compresseddata, and encrypted data, may require a reserved or unique instance ofan information object 116 that functions as a wrapper for the underlyingdata. Continuous stream data, such as a stream of data from a sensor,may also require a unique or reserved instance of an information object116 to represent the stream data because stream data has a beginning butnot necessarily an end to the data.

The client computing device 106 is representative of a plurality ofclient computing devices that may be coupled to the network 109. Theclient computing device 106 may comprise, for example, a processor-basedsystem such as a computer system. Such a computer system may be embodiedin the form of a desktop computer, a laptop computer, personal digitalassistants, cellular telephones, smartphones, set-top boxes, musicplayers, web pads, tablet computer systems, game consoles, electronicbook readers, or other devices with like capability. The clientcomputing device 106 may include a display 119. The display 119 maycomprise, for example, one or more devices such as liquid crystaldisplay (LCD) displays, gas plasma-based flat panel displays, organiclight emitting diode (OLED) displays, LCD projectors, or other types ofdisplay devices, etc.

The client computing device 106 may be configured to execute variousapplications such as a client application 123 and/or other applications.The client application 123 may be executed in a client computing device106, for example, to access network content served up by the computingenvironment 103 and/or other servers, thereby rendering a user interface300 on the display 119. To this end, the client application 123 maycomprise, for example, a browser, a dedicated application, etc., and theuser interface 300 may comprise a network page, an application screen,etc. The client computing device 106 may be configured to executeapplications beyond the client application 123 such as, for example,email applications, social networking applications, word processors,spreadsheets, and/or other applications.

In addition, one or more sensors and other data feeds 126 may be innetwork communication with the collaboration server 113 or the clientapplication 123. Sensors and other data feeds may comprise anyelectronic device capable of generating or recording data andtransmitting the data to the collaboration server 113. Examples ofsensors and other data feeds 126 include accelerometers, temperaturesensors or thermostats, video or web cameras, microphones, noisesensors, pressure sensors, scales, timers, flow meters, light sensors,outputs or results of applications or programs, and other such devicesor programs.

Although FIG. 1 depicts a network-centric configuration representing aclient-server model, this does not preclude other configurations. Forexample, in some embodiments the client computing device 106 may be acomputing device located within the computing environment 103. Invarious embodiments, the client application 123 may be located in thecomputing environment 103 along with the collaboration server 113, butthe client application 123 may communicate or render the user interface300 on the display 119 of the client computing device 106. In otherembodiments, the collaboration server 113, the data store 111, and theclient application 123 may all be located within a single computingdevice, such as the client computing device 106 or a single computerwithin the computing environment 103.

Next, a general description of the operation of the various componentsof the networked environment 100 is provided. To begin, the clientapplication 123 makes a request for one or more information objects 116for use in a presentation, report, or similar document.

Upon receiving the requested information objects 116, the clientapplication 123 presents the requested information objects 116 to theuser through the user interface 300. The user may interact with theinformation objects 116 as desired.

For example, the user may select one or more information objects 116 forthe basis of a presentation. Each information object 116 may correspondto a slide image or diagram within the presentation.

Alternatively, the user may interact with an information object 116 toselect a child information object 116, or otherwise “drill down” to lookat the underlying data associated with the information object 116. Forexample, the user may select an information object 116 labeled“bacteria.” Within the information object 116 labeled bacteria, a listof bacteria may be provided. Each listing corresponding to a childinformation object. Should the user select a child information object116, information related to the child information object 116 may besurfaced to the user, where such information was not previously visibleto the user.

In another non-limiting example, the user may choose to create one ormore information objects 116 to represent data or information that isnot currently within the system. To continue with the bacteria example,a user may choose to create a new information object 116 associated withthe “bacteria” information object 116 that represents a newly discoveredbacterium. Further, in some embodiments of the present disclosure, anewly created information object 116 may be uploaded to thecollaboration server 113 in order to be stored within the data store 111for future use by the user or other users.

Referring next to FIG. 2, shown is a depiction of the data structure ofan information object 116. Each information object 116 has at least oneunique identifier 203, which uniquely identifies a particular instanceof an information object 116 within the data store 111 (FIG. 1). Eachinformation object 116 also includes content 206. Included in thecontent 206 of the information object 116 may be one or more informationobject references, such as information object reference 209 a throughinformation object reference 209 n. The content 206 of the informationobject 116 may also include attributes 213 describing the informationobject 116. In addition, the information object 116 may include formdata 216 and multiple functions 219.

A unique identifier 203 may be either a unique alpha-numeric number,such as the result of a cryptographic hash function, or may be a uniquenumber generated by the collaboration server 113 (FIG. 1) when theinformation object 116 is created. For example, the collaboration server113 may apply a cryptographic hash function, such as a version of theSecure Hash Algorithm, to an information object 116 to generate theunique identifier 203. In another example, the collaboration server 113may increment a counter when the information object 116 is created andthen set the unique identifier 203 equal to the value of the counter. Insome embodiments, both approaches may be combined to minimize the riskof collisions from the cryptographic hash function or duplicate countervalues resulting from integer overflow errors. For example, the countermay be incremented and the value prepended or appended to the result ofa cryptographic has function to create a unique identifier 203.

The content 206 corresponds to the data represented by an informationobject 116, which may include one or more information object references209 a . . . n and/or one or more attributes 213. Each information objectreference 209 a . . . n points or links to a related information object223. A related information object 223 may correspond to information thatis a component of the information object 116 or is related to theinformation object 223 in some manner. For example, an informationobject 116 representing the country “Russia” may have an informationobject reference 209 linking the information object 116 to a relatedinformation 223 corresponding to the city “Moscow.” The informationobject 116 representing “Russia” may also include a second informationobject reference 209 to a related information object 223 representing alist of countries and a third information object reference 209 to arelated information object 223 representing “Communism.”

The attributes 213 of the information object 116 represent data storedwithin the Information Object 116 which may or not be directly presentedto the user as main content. Attributes 213 of an information object 116may include, for example, a username of a user who originally createdthe information object 116, a username of each user who has modified theinformation object 116, a timestamp recording the creation of theinformation object 116 and/or modification of the information object116, a version of the interface standard supported by the informationobject 116 for use with the collaboration server 113 (FIG. 1) or theclient application 123 (FIG. 1), language and/or culturalidentification, and other such data. In some instances, the attributes213 themselves may be represented by other information objects 116. Forexample, a username of the creator of an information object 116 may berepresented by an information object 116 that represents a user account.

The form data 216 corresponds to the data necessary to represent ordisplay an information object 116 on a display 119 (FIG. 1). Forexample, form data 216 may represent the size of the information object116 on the display 119, the location of the information object 116 onthe display 119, a transparency value of the information object 116,whether to overlay or underlay the information object on the display 119with respect to individual ones of the related information objects 223,and similar data or values. In some instances, the form data 216 mayfurther specify the default placement of related information objects 223on a display 119 relative to the information object 116.

The functions 219 correspond to programmatic interfaces, methods, orsimilar mechanisms through which the client application 123 (FIG. 1) orthe collaboration server 113 may interact with or otherwise manipulatethe information object 116. For example, the functions 219 may includefunctions for setting an information object 116 visible or invisible ona display 119, functions for editing or otherwise modifying theinformation object 116, functions for creating new information objectreferences 209 or otherwise linking an information object 116 to arelated information object 223.

An information objection 116 or a related information object 223 mayalso have individual information object references 209 corresponding touser interface elements represented by information objects, such as anavigation information object 226, a menu area information object 229,and a client device information object 233. For example, the navigationinformation object 226 may describe or define the structure orrelationships of the currently selected information object 116 inrelation to other information objects 116. In some embodiments, the menuarea information object 229 may describe or define various menu or otheruser interface 300 (FIG. 1) components which may be used to interactwith the information object 116, such as editing, copying or deletingthe information object 116. In some embodiments, the menu areainformation object 229 may also provide for functionality to create newinformation objects 116. Further, in some embodiments, the client deviceinformation object 233 may contain user and system-wide settings, suchas sound volume, display brightness, network connectivity settings, andother settings.

Moving to FIG. 3A, shown is an example user interface 300, denotedherein as 300 a, of the client application 123 (FIG. 1) executing on theclient computing device 106. As illustrated, an information object 116 amay have other, related information objects 116 b, 116 c, and 116 doverlaid on top of the information object 116 a, permitting a user tovisualize the relationships between the information objects 116 a, 116b, 116 c, and 116 d. Whichever information object 116 is currentlyselected by the user, or otherwise in focus, may have a correspondingnavigation information object 226, menu area information object 229, andclient computing device information object 233 displayed.

Referring next to FIG. 3B, shown is an example user interface 300,denoted herein as 300 b, of the client application 123 (FIG. 1)executing on the client computing device 106. Shown to the right is anavigation information object 226 (FIG. 2), denoted herein as navigationbar 226 b, comprising a number of information objects 116. In thisparticular user interface 300 b, an information object 116 has beenselected and is displayed in the middle of the screen.

Turning now to FIG. 3C, shown is an example user interface 300, denotedherein as 300 c, of the client application 123 (FIG. 1) executing on theclient computing device 106. Shown to the right is a navigationinformation object 226 (FIG. 2), denoted herein as 226 c, comprising anumber of information objects 116. In this particular user interface 300c, a use has selected another information object 116 and the userinterface 300 c has changed accordingly.

Moving on to FIG. 3D, shown is an example user interface 300, denotedherein as 300 d, of the client application 123 (FIG. 1) executing on theclient computing device 106. This particular user interface 300 d showsthe ability of a user of the client application 123 to associate one ormore information objects 116 (FIG. 1) together.

Turning now to FIG. 3E, shown is an example user interface 300, denotedherein as 300 e, of the client application 123 (FIG. 1) executing on theclient computing device 106 (FIG. 1). The user interface 300 e displaysa number of information objects 116, wherein each information object 116includes information about one or more topics which are each embodied bya corresponding information object 116. Further, relationships betweeninformation objects 116 are depicted in order to properly convey therelationship of information.

Turning now to FIG. 3F, shown is an example user interface 300, denotedherein as 300 f, of the client application 123 (FIG. 1) executing on theclient computing device 106 (FIG. 1). The user interface 300 f depictsthe presentation of a child information object 116. In this particularexample, a user has selected the E. Coli information object depicted inuser interface 300 e (FIG. 3E), which has caused the client application123 to surface the information object 116 for E. Coli to the forefrontof the user interface 300 f. Other information objects 116 have beenmoved to the background and/or blurred, had any focus removed, orotherwise deemphasized in order to avoid distracting the focus of theuser from the surfaced information object 116.

Turning now to FIG. 3G, shown is an example user interface 300, denotedherein as 300 g, of the client application 123 (FIG. 1) executing on theclient computing device 106. The user interface 300 g depicts a usercreating one or more information objects 116 (FIG. 1). Such informationobjects 116 may be stored for future reference, or may be used for thepurpose of creating a presentation, report, or similar document.

FIG. 4 shows a flowchart that provides one example of the operation of aportion of the client application 123 and the collaboration server 113according to various embodiments. It is understood that the flowchart ofFIG. 4 provides merely an example of the many different types offunctional arrangements that may be employed to implement the operationof the portions of the client application 123 and the collaborationserver 113 as described herein. As an alternative, the flowchart of FIG.4 may be viewed as depicting an example of elements of a methodimplemented in the networked environment 100 (FIG. 1) according to oneor more embodiments.

Beginning with box 403, the client application 123 receives a selectionof “Create New” or similar option through a user interface 300 (FIG. 1)of the client application 123 indicating that a user wishes to create anew information object 116 (FIG. 2). In some embodiments, for example,the user may have made a selection to create a new information object116 by interacting with a menu area information object 229 (FIG. 2).

Subsequently at box 406, the client application 123 creates a newinformation object 116 locally. In some embodiments, the new informationobject 116 may be locally cached for immediate use by the clientapplication 123 pending an upload of the newly created informationobject 116 to the collaboration server 113. In some embodiments, theclient application 123 may further assign a unique identifier 203 (FIG.2) to the newly created information object 116 and populate the content206 (FIG. 2) and form data 216 (FIG. 2) with default values. Forexample, the attributes 213 (FIG. 2) may be automatically populated withthe user account information of the user who created the informationobject and an information object reference 209 (FIG. 2) may beautomatically created to refer to related information object 223corresponding to a parent or sibling information object 116.

Proceeding next to box 409, the client application 123 sends the newlycreated information object 116 to the collaboration server 113. In someembodiments, the newly created information object 116 may be serialized,for example by calling a function 219 (FIG. 2) of the information object116 to serialize it, and then send the serialized information object 116to the collaboration server 113. In various embodiments, the clientapplication 113 may instead send a copy of the unique identifier 203,the content 206, and the form data 216 to the collaboration server 113.

Referring next to box 413, the collaboration server 113 determineswhether or not the information corresponding to the newly createdinformation object 116 is valid. For example, the collaboration server113 might check for errors as part of the deserialization process. Thecollaboration server 113 may check to see if the data is formattedcorrectly. As another example, the collaboration server 113 may check todetermine if the unique identifier 203 of the newly created informationobject 116 is duplicative of a unique identifier 203 of an informationobject 116 already existing in the data store 111 (FIG. 1), whichindicates that either the newly created information object 116 is aduplicate or that there is a collision between the unique identifiers203 of the two information objects 116 which needs to be resolved. Ifthe information is invalid, then execution proceeds to box 446. If theinformation is valid, however, then execution proceeds to box 416.

If execution skips to box 446, the collaboration server 113 generates anerror message event and sends an error message to the client application123. The error message may include an error code identifying the type orsource of the error, an error description, and a cause of the error. Insome embodiments, the error message itself may be an information object116 representing the error and including the applicable errorinformation. In various embodiments, the collaboration server 113 mayalso log the error and any associated error information to the datastore 111 or a log file for later analysis.

Moving on to box 416, the collaboration server 113 creates aninformation object 116 in the data store 111 using the informationreceived from the client application 123. If necessary, thecollaboration server 113 also creates any parent or child informationobjects required, as well as any references or connections between thenewly created information object 116 and other existing informationobjects 116.

Referring next to box 419, the collaboration server 113 sends a noticeto the client application 123 that the information object 116 has beencreated. The notice may be in the form of a message, event notifier, orother data format. Additionally, the collaboration server 113 may, insome embodiments, mark the newly created information object 116 as beingcurrently modified or that modifications to the newly createdinformation object 116 are in progress. This may lock the informationobject 116 or otherwise prevent the information object 116 from beingmodified by other users, applications, or processes while theinformation object 116 is being modified.

Proceeding to box 423, the client application 123 receives anotification from the collaboration server 113 that the informationobject 116 has been created. In some embodiments, the notification mayalso include an indication that the newly created information object 116is marked for editing or modifications. If the newly created informationobject is marked for editing, the client application 123 may enablemodifications to be made to the client or local copy of the informationobject 116. For example, the client application 123 may mark fields ofthe newly created information object 116 as editable, enable variousmenu functions for the information object 116, or take similar actions.

Moving on to box 426, the client application 123 obtains one or moreuser modifications to the newly created information object 116. In someembodiments, the client application 123 may automatically save the usermodifications. For example, the client application 123 may automaticallysend each change to the collaboration server 113, or the clientapplication 123 may send changes to the collaboration server 113 inbatches on a periodic basis, such as every few minutes, every hour, orsome other period of time. The client application 123 may also locallysave changes or modifications to the newly created information object116 on the client computing device 106 (FIG. 1). When the user hasfinished modifying the newly created information object 116, the finalset of changes is sent to the collaboration server 113. In someembodiments, the changes sent may be sent in a file format that recordsthe changes between the copy of the information object 116 stored in thedata store 111 and the copy of the information object 116 stored on theclient computing device 106. In various embodiments, the changes mayinstead be sent as copy of the information object 116 locally stored onthe client computing device 106 to be used to replace the copy of thecorresponding information object 116 stored in the data store 111. Insuch embodiments, the copy of the information object 116 may beserialized and transmitted to the collaboration server 113.

Referring next to box 429, the collaboration server 113 determineswhether or not the information corresponding to the modified informationobject 116 is valid. For example, the collaboration server 113 mightcheck for errors as part of the deserialization process. Thecollaboration server 113 may check to see if the data is formattedcorrectly. If the information is invalid, then execution proceeds to box446, previously described. If the information is valid, however, thenexecution proceeds to box 433.

Proceeding next to box 433, the collaboration server 113 stores themodifications to the information object 116 in the data store 111. Insome embodiments, this may be accomplished by overwriting or replacing aprevious copy of information object 116 stored in the data store 111. Inother embodiments, the content of the information object 116 may beedited or updated instead of overwriting the information object 116 witha newer copy or version.

Moving on to box 436, the collaboration server 113 sends a notice to theclient application 123 that the updates to the information object 116are completed. The notice may be in the form of a message, eventnotifier, or other data format. Additionally, the collaboration server113 may mark the newly created information object 116 as being aseditable, such that other users or processes waiting to make changes tothe information object 116 may do so.

Referring next to box 439, the client application 123 receives thenotice that the updates or changes to the newly created informationobject 116 are complete. In some embodiments, the client application 123may lock or otherwise prevent users from modifying the newly createdinformation object 116 upon receiving the notice. Execution thenproceeds to box 443, where the client application 123 renders the newlycreated information object 116.

FIG. 5 shows a flowchart that provides one example of the operation of aportion of the client application 123 and the collaboration server 113according to various embodiments. It is understood that the flowchart ofFIG. 5 provides merely an example of the many different types offunctional arrangements that may be employed to implement the operationof the portions of the client application 123 and the collaborationserver 113 as described herein. As an alternative, the flowchart of FIG.5 may be viewed as depicting an example of elements of a methodimplemented in the networked environment 100 (FIG. 1) according to oneor more embodiments.

Beginning with box 503, the client application 123 marks an informationobject 116 as editable. For example, an information object 116 (FIG. 1)may be locked by another process or user for editing by thecollaboration server 113. Accordingly, until the collaboration server113 unlocks the information object 116 and communicates to the clientapplication 123 that the information object 116 is free for editing, theinformation object 116 may not be editable by a user of the clientapplication 123.

Subsequent to marking the information object 116 as editable, executionon the client application moves to box 506, where the client application123 obtains a user selection of the information object 116 for editing.The user may, for example use a mouse click, touch gesture, or otherinteraction to indicate to the client application 123 that theinformation object 116 is to be edited.

Proceeding to box 509, the client application 123 retrieves the uniqueidentifier 203 (FIG. 2) of the information object 116. Upon retrieval,the client application 123 sends the unique identifier 203 to thecollaboration server 113.

Referring next to box 513, the collaboration server 113 determineswhether or not the unique identifier 203 (FIG. 2) is valid. For example,the collaboration server 113 may determine whether an information object116 in the data store 111 (FIG. 1) with the unique identifier 203exists. If not, the collaboration server 113 may generate an error. Asanother example, the collaboration server 113 may further determinewhether the information object 116 in the data store 111 is an editableinformation object 116. If not, the collaboration server 113 maygenerate an error. If the collaboration server 113 determines that theunique identifier 203 is invalid, then execution proceeds to box 543. Ifthe information is valid, however, then execution proceeds to box 516.

If execution skips to box 543, the collaboration server 113 generates anerror message event and sends an error message to the client application123. The error message may include an error code identifying the type orsource of the error, an error description, and a cause of the error. Insome embodiments, the error message itself may be an information object116 representing the error and including the applicable errorinformation. In various embodiments, the collaboration server 113 mayalso log the error and any associated error information to the datastore 111 or a log file for later analysis.

Moving on to box 516, the collaboration server 113 may mark the selectedinformation object 116 as being currently modified or that modificationsto the selected information object 116 are in progress. This may lockthe information object 116 or otherwise prevent the information object116 from being modified by other users, applications, or processes whilethe information object 116 is being modified. After locking theinformation object 116, the collaboration server 113 then sends amessage to the client application 123 that the information object 116may be edited.

Referring next to box 519, the client application 123 may enablemodifications to be made to the client or local copy of the informationobject 116 in response to receiving the message from the collaborationserver 113. For example, the client application 123 may mark fields ofthe selected information object 116 as editable, enable various menufunctions for the information object 116, or take similar actions.

Proceeding to box 523, the client application 123 obtains one or moreuser modifications to the selected information object 116. In someembodiments, the client application 123 may automatically save the usermodifications. For example, the client application 123 may automaticallysend each change to the collaboration server 113, or the clientapplication 123 may send changes to the collaboration server 113 inbatches on a periodic basis, such as every few minutes, every hour, orsome other period of time. The client application 123 may also locallysave changes or modifications to the selected information object 116 onthe client computing device 106 (FIG. 1). When the user has finishedmodifying the selected information object 116, the final set of changesis sent to the collaboration server 113. In some embodiments, thechanges sent may be sent in a file format that records the changesbetween the copy of the information object 116 stored in the data store111 and the copy of the information object 116 stored on the clientcomputing device 106. In various embodiments, the changes may instead besent as a copy of the information object 116 locally stored on theclient computing device 106 to be used to replace the copy of thecorresponding information object 116 stored in the data store 111. Insuch embodiments, the copy of the information object 116 may beserialized and transmitted to the collaboration server 113.

Referring next to box 526, the collaboration server 113 determineswhether or not the information corresponding to the modified informationobject 116 is valid. For example, the collaboration server 113 mightcheck for errors as part of the deserialization process. Thecollaboration server 113 may check to see if the data is formattedcorrectly. If the information is invalid, then execution proceeds to box543, previously described. If the information is valid, however, thenexecution proceeds to box 529.

Moving on to box 529, the collaboration server 113 stores themodifications to the information object 116 in the data store 111. Insome embodiments, this may be accomplished by overwriting or replacing aprevious copy of information object 116 stored in the data store 111. Inother embodiments, the content of the information object 116 may editedor updated instead of overwriting the information object 116 with anewer copy or version.

Referring next to box 533, the collaboration server 113 sends a noticeto the client application 123 that the updates to the information object116 are completed. The notice may be in the form of a message, eventnotifier, or other data format. Additionally, the collaboration server113 may mark the selected information object 116 as being as editable,such that other users or processes waiting to make changes to theinformation object 116 may do so.

Moving on to box 536, the client application 123 receives the noticethat the updates or changes to the selected information object 116 arecomplete. In some embodiments, the client application 123 may lock orotherwise prevent users from modifying the selected information object116 upon receiving the notice. Execution then proceeds to box 539, wherethe client application 123 renders the modified information object 116.

FIG. 6 shows a flowchart that provides one example of the operation of aportion of the client application 123 and the collaboration server 113according to various embodiments. It is understood that the flowchart ofFIG. 6 provides merely an example of the many different types offunctional arrangements that may be employed to implement the operationof the portions of the client application 123 and the collaborationserver 113 as described herein. As an alternative, the flowchart of FIG.6 may be viewed as depicting an example of elements of a methodimplemented in the networked environment 100 (FIG. 1) according to oneor more embodiments.

Beginning with box 603, the client application 123 receives informationor data that is to be imported into the system. For example, the clientapplication 123 may receive a video file, an image file, a portabledocument format (PDF) document, a text document, an audio file, or someother type of file.

Subsequently at box 606, the client application 123 analyzes the fileand creates a new information object 116 locally based on the file. Insome embodiments, the new information object 116 may be locally cachedfor immediate use by the client application 123 pending an upload of thenewly created information object 116 to the collaboration server 113. Insome embodiments, the client application 123 may further assign a uniqueidentifier 203 (FIG. 2) to the newly created information object 116 andpopulate the content 206 (FIG. 2) and form data 216 (FIG. 2) withdefault values. For example, the attributes 213 (FIG. 2) may beautomatically populated with the user account information of the userwho created the information object and an information object reference209 (FIG. 2) may be automatically created to refer to relatedinformation object 223 corresponding to a parent or sibling informationobject 116. Further, in some embodiments, the client application 123 mayset values for certain attributes 209 based on the file and may populatethe content 206 and form data 216 with values based at least in part onthe imported file.

Proceeding next to box 609, the client application 123 sends the newlycreated information object 116 to the collaboration server 113. In someembodiments, the newly created information object 116 may be serialized,for example by calling a function 219 (FIG. 2) of the information object116 to serialize it, and then send the serialized information object 116to the collaboration server 113. In various embodiments, the clientapplication 113 may instead send a copy of the unique identifier 203,the content 206, and the form data 216 to the collaboration server 113.

Referring next to box 613, the collaboration server 113 determineswhether or not the information corresponding to the newly createdinformation object 116 is valid. For example, the collaboration server113 might check for errors as part of the deserialization process. Thecollaboration server 113 may check to see if the data is formattedcorrectly. As another example, the collaboration server 113 may check todetermine if the unique identifier 203 of the newly created informationobject 116 is duplicative of a unique identifier 203 of an informationobject 116 already existing in the data store 111 (FIG. 1), whichindicate that either the newly created information object 116 is aduplicate or that there is a collision between the unique identifiers203 of the two information objects 116 which needs to be resolved. Ifthe information is invalid, then execution proceeds to box 646. If theinformation is valid, however, then execution proceeds to box 616.

If execution skips to box 646, the collaboration server 113 generates anerror message event and sends an error message to the client application123. The error message may include an error code identifying the type orsource of the error, an error description, and a cause of the error. Insome embodiments, the error message itself may be an information object116 representing the error and including the applicable errorinformation. In various embodiments, the collaboration server 113 mayalso log the error and any associated error information to the datastore 111 or a log file for later analysis.

Moving on to box 616, the collaboration server 113 creates aninformation object 116 in the data store 111 using the informationreceived from the client application 123. If necessary, thecollaboration server 113 also creates any parent or child informationobjects required, as well as any references or connections between thenewly created information object 116 and other existing informationobjects 116.

Referring next to box 619, the collaboration server 113 sends a noticeto the client application 123 that the information object 116 has beencreated. The notice may be in the form of a message, event notifier, orother data format. Additionally, the collaboration server 113 may, insome embodiments, mark the newly created information object 116 as beingcurrently modified or that modifications to the newly createdinformation object 116 are in progress. This may lock the informationobject 116 or otherwise prevent the information object 116 from beingmodified by other users, applications, or processes while theinformation object 116 is being modified.

Proceeding to box 623, the client application 123 receives anotification from the collaboration server 113 that the informationobject 116 has been created. In some embodiments, the notification mayalso include an indication that the newly created information object 116is marked for editing or modifications. If the newly created informationobject is marked for editing, the client application 123 may enablemodifications to be made to the client or local copy of the informationobject 116. For example, the client application 123 may mark fields ofthe newly created information object 116 as editable, enable variousmenu functions for the information object 116, or take similar actions.

Moving on to box 626, the client application 123 obtains one or moreuser modifications to the newly created information object 116. In someembodiments, the client application 123 may automatically save the usermodifications. For example, the client application 123 may automaticallysend each change to the collaboration server 113, or the clientapplication 123 may send changes to the collaboration server 113 inbatches on a periodic basis, such as every few minutes, every hour, orsome other period of time. The client application 123 may also locallysave changes or modifications to the newly created information object116 on the client computing device 106 (FIG. 1). When the user hasfinished modifying the newly created information object 116, the finalset of changes is sent to the collaboration server 113. In someembodiments, the changes sent may be sent in a file format that recordsthe changes between the copy of the information object 116 stored in thedata store 111 and the copy of the information object 116 stored on theclient computing device 106. In various embodiments, the changes mayinstead be sent as copy of the information object 116 locally stored onthe client computing device 106 to be used to replace the copy of thecorresponding information object 116 stored in the data store 111. Insuch embodiments, the copy of the information object 116 may beserialized and transmitted to the collaboration server 113.

Referring next to box 629, the collaboration server 113 determineswhether or not the information corresponding to the modified informationobject 116 is valid. For example, the collaboration server 113 mightcheck for errors as part of the deserialization process. Thecollaboration server 113 may check to see if the data is formattedcorrectly. If the information is invalid, then execution proceeds to box646, previously described. If the information is valid, however, thenexecution proceeds to box 633.

Proceeding next to box 633, the collaboration server 113 stores themodifications to the information object 116 in the data store 111. Insome embodiments, this may be accomplished by overwriting or replacing aprevious copy of information object 116 stored in the data store 111. Inother embodiments, the content of the information object 116 may editedor updated instead of overwriting the information object 116 with anewer copy or version.

Moving on to box 636, the collaboration server 113 sends a notice to theclient application 123 that the updates to the information object 116are completed. The notice may be in the form of a message, eventnotifier, or other data format. Additionally, the collaboration server113 may mark the newly created information object 116 as being aseditable, such that other users or processes waiting to make changes tothe information object 116 may do so.

Referring next to box 639, the client application 123 receives thenotice that the updates or changes to the newly created informationobject 116 are complete. In some embodiments, the client application 123may lock or otherwise prevent users from modifying the newly createdinformation object 116 upon receiving the notice. Execution thenproceeds to box 643, where the client application 123 renders the newlycreated information object 116.

FIG. 7 shows a flowchart that provides one example of the operation of aportion of the client application 123 and the collaboration server 113according to various embodiments. It is understood that the flowchart ofFIG. 7 provides merely an example of the many different types offunctional arrangements that may be employed to implement the operationof the portions of the client application 123 and the collaborationserver 113 as described herein. As an alternative, the flowchart of FIG.7 may be viewed as depicting an example of elements of a methodimplemented in the networked environment 100 (FIG. 1) according to oneor more embodiments.

Beginning with box 703, the client application 123 receives a triggerevent. The trigger event includes any event which indicates that theinformation object 116 associated with the trigger event should bemodified. A trigger event may include, for example, a command receivedby the user interface 300 (FIG. 1) to automatically arrange or layoutthe displayed information objects 116 according to one or morepredefined rules. The user interface may then send a trigger to thecorresponding information objects 116 to modify their form data 216according to the one or more predefined rules. For example, the triggerevent may instruct the information objects 116 may alter their position,size or shape values stored in the form data 216.

Proceeding to box 706, the client application 123 retrieves the uniqueidentifier 203 (FIG. 2) of the information object 116 that correspondsto the trigger event. Upon retrieval, the client application 123 sendsthe unique identifier 203 to the collaboration server 113.

Referring next to box 709, the collaboration server 113 determineswhether or not the unique identifier 203 (FIG. 2) is valid. For example,the collaboration server 113 may determine whether an information object116 in the data store 111 (FIG. 1) with the unique identifier 203exists. If not, the collaboration server 113 may generate an error. Asanother example, the collaboration server 113 may further determinewhether the information object 116 in the data store 111 is an editableinformation object 116. If not, the collaboration server 113 maygenerate an error. If the collaboration server 113 determines that theunique identifier 203 is invalid, then execution proceeds to box 739. Ifthe information is valid, however, then execution proceeds to box 713.

If execution skips to box 739, the collaboration server 113 generates anerror message event and sends an error message to the client application123. The error message may include an error code identifying the type orsource of the error, an error description, and a cause of the error. Insome embodiments, the error message itself may be an information object116 representing the error and including the applicable errorinformation. In various embodiments, the collaboration server 113 mayalso log the error and any associated error information to the datastore 111 or a log file for later analysis.

Moving on to box 713, the collaboration server 113 may mark theinformation object 116 as being currently modified or that modificationsto the information object 116 are in progress. This may lock theinformation object 116 or otherwise prevent the information object 116from being modified by other users, applications, or processes while theinformation object 116 is being modified. After locking the informationobject 116, the collaboration server 113 then sends a message to theclient application 123 that the information object 116 may be edited.

Proceeding to box 719, the client application 123 modifies theinformation object 116 in response to the trigger according to theconditions associated with the trigger. In some embodiments, the changesmay be automatically saved locally on the client computing device 106(FIG. 1) pending the changes being sent to the collaboration server 113.

Referring next to box 723, the collaboration server 113 determineswhether or not the information corresponding to the modified informationobject 116 is valid. For example, the collaboration server 113 mightcheck for errors as part of the deserialization process. Thecollaboration server 113 may check to see if the data is formattedcorrectly. If the information is invalid, then execution proceeds to box739, previously described. If the information is valid, however, thenexecution proceeds to box 526.

Moving on to box 726, the collaboration server 113 stores themodifications to the information object 116 in the data store 111. Insome embodiments, this may be accomplished by overwriting or replacing aprevious copy of information object 116 stored in the data store 111. Inother embodiments, the content of the information object 116 may editedor updated instead of overwriting the information object 116 with anewer copy or version.

Referring next to box 729, the collaboration server 113 sends a noticeto the client application 123 that the updates to the information object116 are completed. The notice may be in the form of a message, eventnotifier, or other data format. Additionally, the collaboration server113 may mark the newly created information object 116 as being aseditable, such that other users or processes waiting to make changes tothe information object 116 may do so.

Moving on to box 733, the client application 123 receives the noticethat the updates or changes to the information object 116 are complete.In some embodiments, the client application 123 may lock or otherwiseprevent users from modifying the information object 116 upon receivingthe notice. Execution then proceeds to box 736, where the clientapplication 123 renders the modified information object 116.

FIG. 8 shows a flowchart that provides one example of the operation of aportion of the client application 123 and the collaboration server 113according to various embodiments. It is understood that the flowchart ofFIG. 8 provides merely an example of the many different types offunctional arrangements that may be employed to implement the operationof the portions of the client application 123 and the collaborationserver 113 as described herein. As an alternative, the flowchart of FIG.8 may be viewed as depicting an example of elements of a methodimplemented in the networked environment 100 (FIG. 1) according to oneor more embodiments.

Beginning with box 803, the client application 123 receives data from adata source to be added to an existing information object 116 (FIG. 1).The data source, for example, may include one or more sensors and/orother data feeds 126 (FIG. 1). Data may be received as an informationobject 116 or a series of information objects 116. For example, atemperature sensor may record a series of temperatures and supply themto the client application 123 as a series of information objects 116 oras a single information object 116 representing the stream or series oftemperature readings. In some embodiments, the sensors and/or other datafeeds may supply the data as a raw data that has not yet been processedinto one or more information objects 116. It is also noted that in someembodiments, the sensors and/or other data feeds 126 may supplyinformation directly to the collaboration server 113.

Referring next to box 806, the client application 123 validates theinformation supplied by the one or more sensors and/or other data feeds126. Validation may depend on the type of information supplied by theone or more sensors and/or other data feeds 126. If the data is receivedin the form of an information object 116, the client application 123 maydetermine whether or not the information object is validly formatted andconstructed. If the data is received as raw data, the client application123 may perform validation checks on the data received. If the datareceived is invalid, execution skips to box 843. If the data received isvalid, then execution proceeds to box 809.

If execution skips to box 843, the client application sends an errormessage to the sensor and/or other data feed 126 indicating that thedata or information object 116 received is invalided. In someembodiments, the client application 123 may also generate an errormessage to be rendered within the user interface 300 (FIG. 1) and/orwrite the error or error message to a log. The process then terminates.

If execution proceeds to box 809, however, then the client application123 invokes one or more functions 219 (FIG. 2) of the existinginformation object 116. As part of the invocation process, the clientapplication 123 may query or send a request to the collaboration server113 for a copy of the latest or most current version of the function 219to be invoked. For example, if the data supplied by the one or moresensors and/or other data feeds 126 were temperature data or a series oftemperature readings, then the client application 123 may invoke an“AddNewTemperatureReading” function 219 of the existing informationobject 116 to add the data received by adding an information objectreference 209 (FIG. 2) to the existing information object 116 thatcreates an association between the existing information object 116. Insome embodiments, a generic “AddNewData” function 219 may be invoked tocreate an information object reference 209 between the data received andexisting information object 116.

Proceeding next to box 813, the collaboration server 113 determineswhether the information provided is valid. For example, thecollaboration server may determine whether the arguments supplied by theclient application 123 with respect with the function 219 to be calledare correct. To use the illustrative example of a temperature sensor,the collaboration server may determine whether the client application123 is passing temperature readings to an “AddNewTemperatureReading”function 219 or whether the client application 123 is attempting to passarguments that are unrelated to temperature data. As another example,the collaboration server 113 may determine whether the request for themost current version of the function 219 is valid. As an example, therequested function might not exist or might have been deprecated orremoved from the current implementation of the system, and therefore thefunction may no longer be available to be called. In some embodiments, asubset of functions 219 may require elevated or special permissions toexecute, and therefore the collaboration server 113 must determinewhether the client application 213 has the appropriate permissions toexecute the function 219. If the collaboration server 113 determinesthat the request is for the most recent version of the function 219 isinvalid, execution skips to box 846. However, if the collaborationserver 113 determines that the request is valid, then execution proceedsto box 816.

Skipping ahead to box 846, the collaboration server 113 generates anerror message event and sends an error message to the client application123. The error message may include an error code identifying the type orsource of the error, an error description, and a cause of the error. Insome embodiments, the error message itself may be an information object116 representing the error and including the applicable errorinformation. In various embodiments, the collaboration server 113 mayalso log the error and any associated error information to the datastore 111 (FIG. 1) or a log file for later analysis.

Referring next to box 816, the collaboration server 113 queries the datastore 111 to determine the most current version of the function 219which the client application 123 has requested to execute. Thecollaboration server 113 then sends the code or logic for the mostcurrent or recent version of the function 219 to the client application123. In some embodiments, the function 219 may be sent as human readablesource code. In other embodiments, the function 219 may be serializedand sent to the client application 123.

Moving on to box 819, the client application 123 receives the mostrecent version of the function 219 from the collaboration server 113. Ifthe function 219 is provided as human readable source code, the clientapplication 123 may compile or interpret the human readable source codeinto a machine readable binary. If the function 219 has been sent in aserialized form, the function 219 may be deserialized by the clientapplication 123. The client application 123 then executes the function219.

Proceeding next to box 823, the results of the function 219 executed inbox 819 are sent to the collaboration server 113. In some embodiments,the results may be sent as a newly created information object 116 or setof information objects 116.

Referring next to box 826, the collaboration server 113 determineswhether the results of the function invoked in box 819 are valid. Forexample, the collaboration server 113 may determine whether theresulting information objects 116 are formatted correctly. As anotherexample, the collaboration server 113 may determine whether a collisionexists between the resulting information object 116 or objects 116 andany preexisting information objects 116 in the data store 111. If theresults are invalid, then execution skips to box 846, as previouslydescribed. If the results are valid, then execution instead proceeds tobox 829.

Moving on to box 829, the collaboration server 113 marks the initialinformation object 116 as being modified. This locks or otherwiseprevents the initial information object 116 from being modified by otherclient applications 123 or processes. The collaboration server thensaves the data or information objects 116 resulting from the function219 executed in box 819 to the data store 111 and also saves anymodifications necessary to link the initial information object 116 tothe newly created information objects 116.

Proceeding next to box 833, the collaboration server 113 marks therespective information objects 116 as having been modified, unlockingthe information objects 116 such that other client applications 123 orother processes may read or modify them. The collaboration server 113then sends a message to the client application 123 indicating that allchanges to the respective information objects 116 are complete.Referring next to box 836, the client application 123 receivesnotification from the collaboration server 113 that the updates to theinformation objects 116 in the data store 111 have been completed.Moving on to box 839, the function 219 invoked in box 809 and executedin box 819 completes, and the function 219 ends.

With reference to FIG. 9, shown is a schematic block diagram of thecomputing environment 103 according to an embodiment of the presentdisclosure. The computing environment 103 includes one or more computingdevices 900. Each computing device 900 includes at least one processorcircuit, for example, having a processor 903 and a memory 906, both ofwhich are coupled to a local interface 909. To this end, each computingdevice 900 may comprise, for example, at least one server computer orlike device. The local interface 909 may comprise, for example, a databus with an accompanying address/control bus or other bus structure ascan be appreciated.

Stored in the memory 906 are both data and several components that areexecutable by the processor 903. In particular, stored in the memory 906and executable by the processor 903 are collaboration server 113, andpotentially other applications. Also stored in the memory 906 may be adata store 111 and other data. In addition, an operating system 911 maybe stored in the memory 906 and executable by the processor 903.

It is understood that there may be other applications that are stored inthe memory 906 and are executable by the processor 903 as can beappreciated. Where any component discussed herein is implemented in theform of software, any one of a number of programming languages may beemployed such as, for example, C, C++, C#, Objective C, Java®,JavaScript®, Perl, PHP, Visual Basic®, Python®, Ruby, Flash®, or otherprogramming languages.

A number of software components are stored in the memory 906 and areexecutable by the processor 903. In this respect, the term “executable”means a program file that is in a form that can ultimately be run by theprocessor 903. Examples of executable programs may be, for example, acompiled program that can be translated into machine code in a formatthat can be loaded into a random access portion of the memory 906 andrun by the processor 903, source code that may be expressed in properformat such as object code that is capable of being loaded into a randomaccess portion of the memory 906 and executed by the processor 903, orsource code that may be interpreted by another executable program togenerate instructions in a random access portion of the memory 906 to beexecuted by the processor 903, etc. An executable program may be storedin any portion or component of the memory 1006 including, for example,random access memory (RAM), read-only memory (ROM), hard drive,solid-state drive, USB flash drive, memory card, optical disc such ascompact disc (CD) or digital versatile disc (DVD), floppy disk, magnetictape, or other memory components.

The memory 906 is defined herein as including both volatile andnonvolatile memory and data storage components. Volatile components arethose that do not retain data values upon loss of power. Nonvolatilecomponents are those that retain data upon a loss of power. Thus, thememory 906 may comprise, for example, random access memory (RAM),read-only memory (ROM), hard disk drives, solid-state drives, USB flashdrives, memory cards accessed via a memory card reader, floppy disksaccessed via an associated floppy disk drive, optical discs accessed viaan optical disc drive, magnetic tapes accessed via an appropriate tapedrive, and/or other memory components, or a combination of any two ormore of these memory components. In addition, the RAM may comprise, forexample, static random access memory (SRAM), dynamic random accessmemory (DRAM), or magnetic random access memory (MRAM) and other suchdevices. The ROM may comprise, for example, a programmable read-onlymemory (PROM), an erasable programmable read-only memory (EPROM), anelectrically erasable programmable read-only memory (EEPROM), or otherlike memory device.

Also, the processor 903 may represent multiple processors 903 and/ormultiple processor cores and the memory 906 may represent multiplememories 906 that operate in parallel processing circuits, respectively.In such a case, the local interface 909 may be an appropriate networkthat facilitates communication between any two of the multipleprocessors 903, between any processor 903 and any of the memories 906,or between any two of the memories 906, etc. The local interface 909 maycomprise additional systems designed to coordinate this communication,including, for example, performing load balancing. The processor 903 maybe of electrical or of some other available construction.

Although collaboration server 113 and the client application 123, andother various systems described herein may be embodied in software orcode executed by general purpose hardware as discussed above, as analternative the same may also be embodied in dedicated hardware or acombination of software/general purpose hardware and dedicated hardware.If embodied in dedicated hardware, each can be implemented as a circuitor state machine that employs any one of or a combination of a number oftechnologies. These technologies may include, but are not limited to,discrete logic circuits having logic gates for implementing variouslogic functions upon an application of one or more data signals,application specific integrated circuits (ASICs) having appropriatelogic gates, field-programmable gate arrays (FPGAs), or othercomponents, etc. Such technologies are generally well known by thoseskilled in the art and, consequently, are not described in detailherein.

The functionality and operation of an implementation of portions of thecollaboration server 113 or the client application 123 may be describedin the present disclosure. If embodied in software, the functionalitydescribed may represent a module, segment, or portion of code thatcomprises program instructions to implement the specified logicalfunctions. The program instructions may be embodied in the form ofsource code that comprises human-readable statements written in aprogramming language or machine code that comprises numericalinstructions recognizable by a suitable execution system such as aprocessor 903 in a computer system or other system. The machine code maybe converted from the source code, etc. If embodied in hardware, eachblock may represent a circuit or a number of interconnected circuits toimplement the specified logical function(s).

Although a specific order of execution for the application may bedescribed, it is understood that the order of execution may differ fromthat which is depicted. Functionality described may be implementedconcurrently or in parallel with other described functionality.Moreover, functionality described may occur in an order other than thatdescribed or depicted in the present disclosure. Further, in someembodiments, functionality described herein may be skipped or omitted.In addition, any number of counters, state variables, warningsemaphores, or messages might be added to the logical flow describedherein, for purposes of enhanced utility, accounting, performancemeasurement, or providing troubleshooting aids, etc. It is understoodthat all such variations are within the scope of the present disclosure.

Also, any logic or application described herein, including collaborationserver 113 and the client application 123, that comprises software orcode can be embodied in any non-transitory computer-readable medium foruse by or in connection with an instruction execution system such as,for example, a processor 903 in a computer system or other system. Inthis sense, the logic may comprise, for example, statements includinginstructions and declarations that can be fetched from thecomputer-readable medium and executed by the instruction executionsystem. In the context of the present disclosure, a “computer-readablemedium” can be any medium that can contain, store, or maintain the logicor application described herein for use by or in connection with theinstruction execution system.

The computer-readable medium can comprise any one of many physical mediasuch as, for example, magnetic, optical, or semiconductor media. Morespecific examples of a suitable computer-readable medium would include,but are not limited to, magnetic tapes, magnetic floppy diskettes,magnetic hard drives, memory cards, solid-state drives, USB flashdrives, or optical discs. Also, the computer-readable medium may be arandom access memory (RAM) including, for example, static random accessmemory (SRAM) and dynamic random access memory (DRAM), or magneticrandom access memory (MRAM). In addition, the computer-readable mediummay be a read-only memory (ROM), a programmable read-only memory (PROM),an erasable programmable read-only memory (EPROM), an electricallyerasable programmable read-only memory (EEPROM), or other type of memorydevice.

It should be emphasized that the above-described embodiments of thepresent disclosure are merely possible examples of implementations setforth for a clear understanding of the principles of the disclosure.Many variations and modifications may be made to the above-describedembodiment(s) without departing substantially from the spirit andprinciples of the disclosure. All such modifications and variations areintended to be included herein within the scope of this disclosure andprotected by the following claims.

I claim:
 1. A non-transitory computer-readable medium comprising machinereadable instructions that, when executed by a processor of a clientcomputing device, cause the client computing device to at least: query acollaboration server for an information object to be rendered within auser interface of the client computing device on behalf of a user inresponse to a request to render the information object, wherein theinformation object represents at least a set of associations between aplurality of other information objects and the information objectcomprises form data that comprises a set of specified values forrendering the information object within the user interface based atleast in part on the set of associations between the plurality of otherinformation objects, and extract the form data from the informationobject received from the collaboration server; and render theinformation object within the user interface based at least in part onthe form data of the information object.
 2. The non-transitorycomputer-readable medium of claim 1, further comprising machine readableinstructions that, when executed by the processor of the clientcomputing device, cause the client computing device to at least:retrieve an identification of a related information object from theinformation object; query the collaboration server for the relatedinformation object; and render the related information object within theuser interface based at least in part on the form data extracted fromthe information object.
 3. The non-transitory computer-readable mediumof claim 2, further comprising machine readable instructions that, whenexecuted by the processor of the client computing device, cause theclient computing device to at least render within the user interface anindication of a relationship between the information object and therelated information object.
 4. The non-transitory computer-readablemedium of claim 1, further comprising machine readable instructionsthat, when executed by the processor of the client computing device,cause the client computing device to at least: obtain a modification ofthe information object; send the modification to the collaborationserver; render a modified version of the information object within theuser interface in response to receiving a notification from thecollaboration server that the modification is valid; and render an errormessage within the user interface in response to receiving anotification from the collaboration server that the modification isinvalid.
 5. The non-transitory computer-readable medium of claim 1,wherein the information object further comprises at least one of auniversally unique identifier or an information object reference.
 6. Thenon-transitory computer-readable medium of claim 1, further comprisingmachine readable instructions that, when executed by the processor ofthe client computing device, cause the client computing device to atleast: generate a new information object in response to receiving datafrom a data source; create an information object reference linking theinformation object to the new information object; and send theinformation object, the new information, and the information objectreference to the collaboration server.
 7. The non-transitorycomputer-readable medium of claim 6, wherein the data source comprisesan electronic device that generates data and transmits the data to theclient computing device.
 8. A system, comprising: a computing devicecomprising a processor and a memory; an application comprising machinereadable instructions stored in the memory and executable by theprocessor to cause the computing device to at least: query acollaboration server for an information object to be rendered within theuser interface on behalf of a user in response to a request to renderthe information object, wherein the information object represents atleast a set of associations between a plurality of other informationobjects and the information object comprises a programmatic interfacefor manipulating the information object and a set of specified valuesfor rendering the information object within the user interface, the setof specified values being based at least in part on the set ofassociates between the plurality of other information objects; renderthe information object within the user interface based at least in parton the set of specified values in response to an interaction with theprogrammatic interface.
 9. The system of claim 8, wherein theapplication further comprises machine readable instructions stored inthe memory and executable by the processor to cause the computing deviceto further: retrieve an identification of a related information objectfrom the information object; query the collaboration server for therelated information object; and render the related information objectwithin the user interface based at least in part on the form dataextracted from the information object.
 10. The system of claim 9,wherein the application further comprises machine readable instructionsstored in the memory and executable by the processor to cause thecomputing device to further render within the user interface anindication of a relationship between the information object and therelated information object.
 11. The system of claim 8, wherein theapplication further comprises machine readable instructions stored inthe memory and executable by the processor to cause the computing deviceto further: obtain a modification of the information object; send themodification to the collaboration server; render a modified version ofthe information object within the user interface in response toreceiving a notification from the collaboration server that themodification is valid; and render an error message within the userinterface in response to receiving a notification from the collaborationserver that the modification is invalid.
 12. The system of claim 8,wherein the information object further comprises at least one of auniversally unique identifier or an information object reference. 13.The system of claim 8, wherein the application further comprises machinereadable instructions stored in the memory and executable by theprocessor to cause the computing device to further: generate a newinformation object in response to receiving data from a data source;create an information object reference linking the information object tothe new information object; and send the information object, the newinformation, and the information object reference to the collaborationserver.
 14. The system of claim 13, wherein the data source comprises anelectronic device that generates data and transmits the data to thecomputing device.
 15. A method, comprising: querying, via a computingdevice, a collaboration server for an information object to be renderedwithin the user interface on behalf of a user in response to a requestto render the information object, wherein the information objectrepresents at least a set of associations between a plurality of otherinformation objects and comprises a programmatic interface formanipulating the information object; extracting, via the computingdevice, the set of specified values for rendering the information objectwithin a user interface from the information object received from thecollaboration server; and rendering, via the computing device, theinformation object within the user interface based at least in part onthe form data of the information object in response to an interactionwith the programmatic interface.
 16. The method of claim 15, furthercomprising: retrieving, via the computing device, an identification of arelated information object from the information object; querying, viathe computing device, the collaboration server for the relatedinformation object; and rendering, via the computing device, the relatedinformation object within the user interface based at least in part onthe form data extract from the information object.
 17. The method ofclaim 16, further comprising rendering, via the computing device, withinthe user interface an indication of a relationship between theinformation object and the related information object.
 18. The method ofclaim 15, further comprising: obtaining, via the computing device, amodification of the information object; sending, via the computingdevice, the modification to the collaboration server; rendering, via thecomputing device, a modified version of the information object withinthe user interface in response to receiving a notification from thecollaboration server that the modification is valid; and rendering, viathe computing device, an error message within the user interface inresponse to receiving a notification from the collaboration server thatthe modification is invalid.
 19. The method of claim 15, wherein theinformation object further comprises at least one of a universallyunique identifier or an information object reference.
 20. The method ofclaim 15, further comprising: generating, via the computing device, anew information object in response to receiving data from a data source;creating, via the computing device, an information object referencelinking the information object to the new information object; andsending, via the computing device, the information object, the newinformation, and the information object reference to the collaborationserver.